const fs = require('fs').promises;
// 访问登录页面
async function login(page, ip = 'http://localhost:8081', tenantId, username, password) {
  // 访问登录页面
  await page.goto(`${ip}`);

  // 填写租户信息并保存
  await page.locator('text=系统设置').click();
  await page.locator('input[placeholder="请输入 租户"]').fill(tenantId);
  await page.locator('text=保 存').click();

  // 输入账号密码并登录
  await page.locator('#pane-userLogin input[placeholder="请输入账号"]').fill(username);
  await page.locator('#pane-userLogin input[placeholder="请输入密码"]').fill(password || 'admin');
  await page.locator('#pane-userLogin >> text=登录').click();
  //等待主页加载完成，如果不执行，跳转路由会报404
  await page.waitForURL(`${ip}/#/wel/index`, { waitUntil: 'load' });
  await page.waitForTimeout(5000);
}

// 读取文件数据
async function readFile(file) {
  try {
    const data = await fs.readFile(file, { encoding: 'utf8' });
    console.log(data);
    return data;
  } catch (err) {
    console.error('Error reading file:', err);
    throw err; // 如果你希望在调用该函数的地方捕获错误的话，你可以选择将错误抛出
  }
}

// 写入文件
async function writeFile(file, newData) {
  try {
    await fs.writeFile(file, newData, 'utf8');
    console.log('File updated successfully.');
  } catch (err) {
    console.error('Error writing file:', err);
    throw err; // 如果你希望在调用该函数的地方捕获错误的话，你可以选择将错误抛出
  }
}

async function dragDom(page, draggableElement, targetElement) {
  // 获取元素的位置信息
  const draggableBox = await draggableElement.boundingBox();
  const targetBox = await targetElement.boundingBox();
  // 计算拖拽的起始和结束坐标
  const startX = draggableBox.x + draggableBox.width / 2;
  const startY = draggableBox.y + draggableBox.height / 2;
  const endX = targetBox.x + targetBox.width / 2;
  const endY = targetBox.y + targetBox.height - 10;
  console.log(endY);
  // 使用鼠标动作来拖拽元素
  await page.mouse.move(startX, startY, { steps: 10 });
  await page.waitForTimeout(1000);
  await page.mouse.down();
  await page.mouse.move(endX, endY, { steps: 10 });
  await page.mouse.up();
}

module.exports = { login, readFile, writeFile, dragDom }; // 注意这里的导出方式
